package me.zhengjie.kwService;

import com.baomidou.mybatisplus.core.metadata.IPage;
import me.zhengjie.pojo.dto.PageDto;
import me.zhengjie.pojo.entity.Exam;
import me.zhengjie.pojo.entity.ExamStudent;
import me.zhengjie.pojo.entity.ExamTeacher;
import me.zhengjie.pojo.entity.PublicExam;
import me.zhengjie.pojo.vo.ExamDetailVo;
import me.zhengjie.util.BaseResponse;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Long
 * @date 2021/7/6 15:08
 */
public interface PhoneTearcherService {
    /**
     * 监考老师考试公开信息分页查询
     *
     * @param current 当前页码
     * @param size    当前页码条数
     * @return 考试公开信息分页数据
     */
    IPage<PublicExam> findPublicExam(Integer current, Integer size);

    /**
     * 监考老师考试公开信息查询单个
     *
     * @param id 考试公开信息id
     * @return 考试公开信息
     */
    PublicExam findOnePublicExam(Integer id);

    /**
     * 监考老师分页查询考试安排
     *
     * @param current 当前页码
     * @param size    当前页码条数
     * @return 考试信息
     */
    IPage<Exam> findExam(Integer current, Integer size, HttpServletRequest request);

    /**
     * 监考老师查询考试详情
     *
     * @param id 考试id
     * @return 考试详情
     */
    ExamDetailVo findExamDetail(Integer id, HttpServletRequest request);

    /**
     * 监考老师分页查询本场考试考生详情
     *
     * @param id      考试id
     * @param current 当前页码
     * @param size    当前页码条数
     * @return 本场考试所有考生信息
     */
    IPage<ExamStudent> findExamStudent(Integer id, Integer current, Integer size, Integer examRoomId);

    /**
     * 监考老师签到
     *
     * @param id      考试id
     * @param request
     * @return 返回监考老师签到信息
     */
    ExamTeacher checkin(Integer id, HttpServletRequest request);

    /**
     * 监考老师查询自己的签到信息
     *
     * @param id      考试id
     * @param request
     * @return 返回监考老师签到信息
     */
    ExamTeacher checkinInfo(Integer id, HttpServletRequest request);

    /**
     * 监考老师查询自己未监考的考试
     *
     * @param dto 分页信息
     * @return 该监考老师未监考的考试
     */
    IPage<Exam> findNotInExam(PageDto dto, HttpServletRequest request);

    /**
     * 监考老师报名考试
     *
     * @param exam 考试信息
     * @param request
     * @return
     */
    BaseResponse enroll(Exam exam, HttpServletRequest request);
}
